using System.Collections.Generic;

namespace Game.Helper
{
	//辅助类，用于增强HashSet<IntVector2>的功能
    public static class HashSetHelper
    {
        /// <summary>
        /// 获得该集合的内容的Hash
        /// </summary>
        public static int GetContentHash(this HashSet<IntVector2> hashSet)
        {
            //--使用1000000000x+y的方式去获得类似的hash。（冲突率未探索）
            //--由于x、y均可同时为0，又不会为负数，所以可再+偏移值
            int hashCodeVal = 0;
            int xTimes = 1000000000;
            int deltaVal = 1024;                                                        //偏移值
            foreach (IntVector2 v2 in hashSet)
            {
                hashCodeVal +=  (v2.x +deltaVal) * xTimes + v2.y+deltaVal;
            }

            return hashCodeVal;
        }
    }
}
